In today's computer systems, an operating system (OS) and a virtual machine monitor (VMM) (when present) monitor processors and other platform resources for efficient scheduling and performance management purposes. While current architectural support works well in monitoring single application/single core scenarios, this is not the case for multiprocessor systems. That is, newer systems that include multi-core chip multiprocessors (CMP) on platforms having shared resources cannot be sufficiently and accurately monitored.
In CMP platforms applications/virtual machines (VMs) running simultaneously can interfere with each other because of resource contention. OS/VMM execution environments presently do not have any information about either interference or sharing between these disparate threads of execution, leading to sub-optimal scheduling decisions and lower overall performance.
Also, a user often may have a priority associated with the tasks running on the platform. Typical systems can control only the time an application has available on a core, without any control of the other shared resources such as cache or memory bandwidth.